package com.woniu.carrent.pojo;


import java.io.Serializable;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

/**
* 用户信息表
* @TableName t_userinfo
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("t_userinfo")
public class TUserinfo implements Serializable {

    /**
    * 用户唯一标识
    */
    @TableId(value = "uinfo_id", type = IdType.AUTO)
    @NotNull(message="[用户唯一标识]不能为空")
    @ApiModelProperty("用户唯一标识")
    private Integer uinfoId;
    /**
    * 用户真实姓名
    */
    @NotBlank(message="[用户真实姓名]不能为空")
    @Size(max= 50,message="编码长度不能超过50")
    @ApiModelProperty("用户真实姓名")
    @Length(max= 50,message="编码长度不能超过50")
    private String realName;
    /**
    * 身份证号（唯一）
    */
    @NotNull(message="[身份证号（唯一）]不能为空")
    @ApiModelProperty("身份证号（唯一）")
    private String idCard;
    /**
    * 驾照等级
    */
    @NotNull(message="[驾照等级]不能为空")
    @ApiModelProperty("驾照等级")
    private Object drivingLicenseLevel;
    /**
    * 手机号（可选）
    */
    @Size(max= 20,message="编码长度不能超过20")
    @ApiModelProperty("手机号（可选）")
    @Length(max= 20,message="编码长度不能超过20")
    private String phone;
    /**
    * 邮箱（可选）
    */
    @Size(max= 100,message="编码长度不能超过100")
    @ApiModelProperty("邮箱（可选）")
    @Length(max= 100,message="编码长度不能超过100")
    private String email;
    /**
    * 详细地址
    */
    @Size(max= -1,message="编码长度不能超过-1")
    @ApiModelProperty("详细地址")
    @Length(max= -1,message="编码长度不能超过-1")
    private String address;
    /**
    * 注册时间
    */
    @ApiModelProperty("注册时间")
    private Date createTime;
    /**
    * 最后修改时间
    */
    @ApiModelProperty("最后修改时间")
    private Date updateTime;
    /**
    * 用户状态（1: 正常, 0: 禁用）
    */
    @NotNull(message="[用户状态（1: 正常, 0: 禁用）]不能为空")
    @ApiModelProperty("用户状态（1: 正常, 0: 禁用）")
    private Integer status;
    /**
    * 头像链接
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("头像链接")
    @Length(max= 255,message="编码长度不能超过255")
    private String avatarUrl;
    /**
    * 加密后的密码
    */
    @NotBlank(message="[加密后的密码]不能为空")
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("加密后的密码")
    @Length(max= 255,message="编码长度不能超过255")
    private String password;
    /**
    * 密码盐值
    */
    @NotBlank(message="[密码盐值]不能为空")
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("密码盐值")
    @Length(max= 255,message="编码长度不能超过255")
    private String salt;
    /**
    * 扩展信息（JSON格式，存储动态字段）
    */
    @ApiModelProperty("扩展信息（JSON格式，存储动态字段）")
    private Object extraInfo;

}
